/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.com.invest.model;

import java.io.Serializable;
import java.util.Collection;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.Table;

/**
 *
 * @author ceatis
 */
@Entity
@Table(name="ACOES")
public class Acao implements Serializable, Comparable<Acao>{

    @Id
    @GeneratedValue(strategy=GenerationType.IDENTITY)
    @Column(name="COD_ACAO")
    private Integer codAcao;
    @Column(name="PREFIXO", length=9)
    private String prefixo;
    @Column(name="NOME", length=20)
    private String nome;
    @ManyToOne(optional=false)
    @JoinColumn(name="COD_EMPRESA")
    private Empresa empresa;
    @OneToMany (cascade=CascadeType.ALL)
    @JoinColumn(name="COD_COTACAO")
    private Collection <Cotacao> cotacoes;
    @OneToMany
    @JoinColumn(name = "COD_TRANSACAO")
    private Collection <Transacao> transacoes;

    public Acao() {
    }

    public Integer getCodAcao() {
        return codAcao;
    }

    public void setCodAcao(Integer codAcao) {
        this.codAcao = codAcao;
    }

    public String getNome() {
        return nome;
    }

    public void setNome(String nome) {
        this.nome = nome;
    }

    public String getPrefixo() {
        return prefixo;
    }

    public void setPrefixo(String prefixo) {
        this.prefixo = prefixo;
    }

    public Empresa getEmpresa() {
        return empresa;
    }

    public void setEmpresa(Empresa empresa) {
        this.empresa = empresa;
    }
    
    public int compareTo(Acao a){
        return this.codAcao.compareTo(a.codAcao);
    }

    public Collection<Cotacao> getCotacoes() {
        return cotacoes;
    }

    public void setCotacoes(Collection<Cotacao> cotacoes) {
        this.cotacoes = cotacoes;
    }
    
    public void addCotacao(Cotacao c){
        c.setAcao(this);
        cotacoes.add(c);
    }
    
    public void removeCotacao(Cotacao c){
        cotacoes.remove(c);
    }

    public Collection<Transacao> getTransacoes() {
        return transacoes;
    }

    public void setTransacoes(Collection<Transacao> transacoes) {
        this.transacoes = transacoes;
    }
    
    
}
